The present invention relates generally to data communications. More particularly, the present invention relates to faster link down for data communications.
Current Gigabit Ethernet (1000BASE-T) physical-layer devices (PHYs) require a significant amount of time, on the order of hundreds of milliseconds (ms) to indicate a link down condition. FIG. 1 shows a prior art Gigabit Ethernet PHY 100 in accordance with IEEE standard 802.3. Referring to FIG. 1, PHY 100 includes a physical layer controller 102, a physical layer monitor 104, and a maxwait_timer 106. In operation, PHY 100 is connected to a physical link 108. Physical link 108 includes a receive physical link 112 and a transmit physical link 114.
Physical layer controller 102 implements a PHY control state machine 200 specified by FIGS. 40-15 of IEEE standard 802.3, reproduced here as FIG. 2. Referring to FIG. 2, PHY control state machine 200 starts maxwait_timer 106 when entering the SLAVE SILENT state. The maxwait_timer 106 is used by physical layer monitor 104 to indicate a link down condition.
Physical layer monitor 104 implements a physical link monitor state machine 300 specified by FIGS. 40-16 of IEEE standard 802.3, reproduced here as FIG. 3. Referring to FIG. 3, when receive physical link 112 fails (loc_rcvr_status=NOT_OK) in the LINK UP state, physical link monitor state machine 300 will not move to the LINK DOWN state, and indicate that physical link 108 has failed (link_status=FAIL) until maxwait_timer 106 expires (maxwait_timer_done=TRUE).
According to the IEEE 802.3 standard, maxwait_timer is nominally initialized to 350±5 ms when PHY 100 is configured as a SLAVE for physical link 108, and 750±5 ms when PHY 100 is configured as a MASTER. In contrast, fault-tolerant networks are generally required to detect a faulty link, and shift data transmission from the faulty link to a non-faulty link, in 50 ms or less. Clearly, the delay imposed by maxwait_timer upon the transition of physical link monitor state machine 300 from the LINK UP state to the LINK DOWN state is too long.
One possible solution is to simply initialize maxwait_timer to a lower value. However there is a danger that the loc_rcvr_status will bounce between OK and NOT_OK during initial training, resulting in a premature entry into the LINK DOWN state of FIG. 2, which will cause the link_status variable to transition from OK to FAIL. This transition will cause the auto-negotiation arbitration state machine (FIGS. 28-16 of IEEE 802.3) to restart. When the arbitration state machine restarts, the link_control variable is set to DISABLE, which resets the IEEE 802.3 state machines shown in FIGS. 1 and 2.